import request from "@/utils/request"

/**
 * 获取事件系统信息
 * 
 * @param {Object} params - 请求参数
 * @param {string|number} params.id - 公司ID
 * @returns {Promise<Object>} 返回Promise对象
 * @returns {Array<Object>} response.data - 事件对象数组
 * @returns {number} response.data[].id - 事件ID
 * @returns {string} response.data[].updated_at - 最近一次更新时间
 * @returns {number} response.data[].status - 事件状态(1:未处理, 2:已处理, 3:已忽略)
 * @returns {number} response.data[].src_id - 报警来源设备ID
 * @returns {number} response.data[].event_id - 报警类型ID
 * @returns {number} response.data[].company_id - 事件所属的公司ID
 * @returns {number} response.data[].agent_level - 报警等级(1:严重, 2:警告, 3:提示)
 * @returns {string} response.data[].time - 事件产生时间
 * @returns {string} response.data[].value - 事件附带值，非零表示有附带值
 * @returns {number} response.data[].user_id - 处理用户ID
 * @returns {string} response.data[].info - 处理信息
 * @returns {string|null} response.data[].meter_code - 表计代码
 * @returns {number|null} response.data[].type - 事件类型
 * @returns {string|null} response.data[].area - 区域信息
 */
export const getEventApi = async (params) => {
    return request.get('/event', {
        params,
    })
}

/**
 * 更新事件状态
 * 
 * @param {Object} data - 请求数据
 * @param {string|number} data.id - 事件ID
 * @param {number} data.status - 事件状态(1:未处理, 2:已处理, 3:已忽略)
 * @param {string} data.info - 处理信息
 * @returns {Promise<Object>} 返回Promise对象
 */
export const updateEventApi = async (data) => {
    return request.patch('/event', data)
}

/**
 * 获取设备状态列表
 * 
 * @param {Object} params - 请求参数
 * @param {string|number} params.id - 公司ID
 * @returns {Promise<Object>} 返回Promise对象
 */
export function getDeviceStatus(params) {
    return request.get("/status/", {
        params,
    })
}

/**
 * 获取事件规则列表
 * 
 * @param {Object} params - 请求参数
 * @param {string|number} params.id - 公司ID
 * @returns {Promise<Object>} 返回Promise对象，包含事件规则列表
 */
export function getEventRules(params) {
    return request.get("/event/setting", {
        params,
    })
}

/**
 * 添加一条事件规则
 * 
 * @param {Object} data - 请求数据
 * @param {string|number} data.company_id - 公司ID
 * @param {string|number} data.event_id - 事件ID
 * @param {number} data.agent_level - 报警等级(1:严重, 2:警告, 3:提示)
 * @returns {Promise<Object>} 返回Promise对象
 */
export function addEventRule(data) {
    return request.post("/event/setting", data)
}

/**
 * 删除一条事件规则
 * 
 * @param {Object} data - 请求数据
 * @param {string|number} data.id - 规则ID(注意:这里不是event_id，而是规则本身的ID)
 * @returns {Promise<Object>} 返回Promise对象
 */
export function deleteEventRule(data) {
    return request.delete("/event/setting/", {
        data
    })
}

/**
 * 更新一条事件规则
 * 
 * @param {Object} data - 请求数据
 * @param {string|number} data.id - 规则ID(注意:这里不是event_id，而是规则本身的ID)
 * @param {string|number} data.company_id - 公司ID
 * @param {string|number} data.event_id - 事件ID
 * @param {number} data.agent_level - 报警等级(1:严重, 2:警告, 3:提示)
 * @returns {Promise<Object>} 返回Promise对象
 */
export function updateEventRule(data) {
    return request.patch("/event/setting/", data)
}


/**
 * 获取通知设置列表
 * 
 * @param {Object} params - 请求参数
 * @param {number} [params.user_id] - 用户ID，可选
 * @param {number} [params.event_type_id] - 事件类型ID，可选
 * @returns {Promise<Object>} 返回Promise对象
 * @returns {Array<Object>} response.data - 通知设置对象数组
 * @returns {number} response.data[].user_id - 用户ID
 * @returns {number} response.data[].event_type_id - 事件类型ID
 * @returns {boolean} response.data[].is_email_enabled - 是否启用邮件通知
 * @returns {boolean} response.data[].is_wechat_enabled - 是否启用微信通知
 */
export const getNotifySettings = async (params) => {
    return request.get('/notify', {
        params,
    })
}

/**
 * 添加通知设置
 * 
 * @param {Object} data - 请求数据
 * @param {number} data.user_id - 用户ID，必需
 * @param {number} data.event_type_id - 事件类型ID，必需
 * @param {boolean} data.is_email_enabled - 是否启用邮件通知，必需
 * @param {boolean} data.is_wechat_enabled - 是否启用微信通知，必需
 * @returns {Promise<Object>} 返回Promise对象

 */
export const addNotifySetting = async (data) => {
    return request.post('/notify', data)
}

/**
 * 修改通知设置
 * 
 * @param {Object} data - 请求数据
 * @param {number} data.user_id - 用户ID，必需
 * @param {number} data.event_type_id - 事件类型ID，必需
 * @param {boolean} [data.is_email_enabled] - 是否启用邮件通知，可选
 * @param {boolean} [data.is_wechat_enabled] - 是否启用微信通知，可选
 * @returns {Promise<Object>} 返回Promise对象
 */
export const updateNotifySetting = async (data) => {
    return request.patch('/notify', data)
}

/**
 * 删除通知设置
 * 
 * @param {Object} data - 请求数据
 * @param {number} data.user_id - 用户ID，必需
 * @param {number} data.event_type_id - 事件类型ID，必需
 * @returns {Promise<Object>} 返回Promise对象
 */
export const deleteNotifySetting = async (data) => {
    return request.delete('/notify', {
        data
    })
}